package com.eliaukjq.javase;

/**
 * @Author : 佩萁
 * Description : == 和 equals的区别
 * @Create : 2023/10/24 - 20:06
 */
public class stringEquals {
    public static void main(String[] args) {
        //  ==  ： 基本数据类型比较的是值是否相同，引用数据类型比较的是引用是否相同
        //equals  ：  本质上还是==，只不过被重写后进行的是值比较，equals不能作为基本数据类型的比较，默认进行的是引用比较

        String x = "string";//这种创建对象的方式，Java虚拟机会将其分配到常量池中
        String y = "string";
        String z = new String("string");//Java虚拟机会将其分配到堆内存中
        String q = new String("string");
        System.out.println(x == y);//t
        System.out.println(x.equals(y));//t
        System.out.println(x.equals(z));//t
        System.out.println(x == z);//f

        //String 和 Integer 重写了equals方法，equals本质上就是==，重写后变成了值比较
        System.out.println(x.equals(z));//t
        System.out.println(z.equals(q));//t
    }
}